import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;

public class Txt2Array extends Object {	

	/**
	 * 读取txt文件的内容
	 * 
	 * @param file
	 *            想要读取的文件对象
	 * @return 返回文件内容
	 */
	public static String txt2String(File file) {
		StringBuilder result = new StringBuilder();
		try {
			BufferedReader br = new BufferedReader(new FileReader(file));// 构造一个BufferedReader类来读取文件
			String s = null;
			while ((s = br.readLine()) != null) {// 使用readLine方法，一次读一行
				result.append(System.lineSeparator() + s);
			}
			br.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result.toString();
	}
	
	/**
	 * 从file对象中读取第一行，返回长度
	 * @param file
	 * @return
	 */
	public static int getLen(File file){
		int r = 0;
		try(BufferedReader br = new BufferedReader(new FileReader(file));){
			String s = null;
			s = br.readLine();
			r = Integer.valueOf(s);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return r;
	}
	
	/**
	 * 从file对象中读取各行作为double数组array的元素
	 * @param file
	 * @param array
	 * @return
	 */
	public static String txt2Array(File file, double[] array) {
		StringBuilder result = new StringBuilder();
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(file));// 构造一个BufferedReader类来读取文件
			String s = null;
			br.readLine(); // 跳过首行，因为那是长度
			int i = 0;
			while ((s = br.readLine()) != null) {// 使用readLine方法，一次读一行
				//result.append(System.lineSeparator() + s);
				array[i++] = Double.valueOf(s);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return result.toString();
	}
	
	/* 测试 */
	public static void main(String[] args) {
		URL url = Txt2Array.class.getResource("score.txt");
		/* 去掉file:\ */
		String files = url.toString().substring(6);
		File file = new File(files);
		System.out.println(file);
		/* 首先从文件首行，取到数组长度  */
		int len = getLen(file);
		double[] arrayScore = new double[len];
		System.out.println("数组的长度为："+arrayScore.length);
		
		/* 从第二行开始读取数据到double数组中 */
		System.out.println("依次输出数组：");
		txt2Array(file, arrayScore);
		for(double d : arrayScore)
			System.out.print(d + " ");
	}
}
